Python爬虫实战:根据关键字爬取某度图片批量下载到本地 您所在的位置:网站首页 python根据pixiv网站的图片url下载图片到本地 Python爬虫实战:根据关键字爬取某度图片批量下载到本地

Python爬虫实战:根据关键字爬取某度图片批量下载到本地

2024-06-15 00:44| 来源: 网络整理| 查看: 265

本文主要介绍如何使用Python爬虫根据关键字爬取某度图片批量下载到本地,并且加入代理IP的使用,绕过反爬措施,提高程序的可用性和稳定性。文章包含了代码实现和详细解释,适合于初学者学习。

屏幕截图 2023-09-25 132823.png

前言

随着互联网的发展,我们可以方便地通过搜索引擎搜索到各种图片,比如旅游、风景等。但是我们有时需要批量下载这些图片,手动一个个下载太麻烦,这就需要使用爬虫来实现。

在实际的爬虫开发中,我们会面临一些反爬措施,比如IP限制、请求频率限制等。为了绕过这些限制,我们可以使用代理IP来隐藏我们的真实IP地址,降低被封禁的风险。

因此,在本文中,我们将通过Python爬虫实现根据关键字爬取某度图片批量下载到本地,并加入代理IP的使用,绕过反爬措施。

准备工作

在开始编写代码之前,我们需要先了解一些必要的知识和工具。

Requests库

Requests是Python中的第三方库,提供了简洁而又直观的HTTP请求API,使得我们可以用Python发送HTTP/1.1请求。它采用Python的标准库模块urllib中的基本方法,但是Requests库可以更加方便地发送HTTP/1.1请求,并且支持更多的HTTP请求方法,比如PUT、DELETE、HEAD、OPTIONS等。Requests库还提供了更便捷的Session类,可以在多次请求之间保持cookies等信息,也更容易使用代理等高级功能。

我们可以使用以下命令安装Requests库:

pip install requests BeautifulSoup库

BeautifulSoup是Python中的第三方库,提供了一种从HTML或XML文件中提取数据的方法。它可以自动将复杂的HTML文本解析成树形结构,并提供了内置的遍历和搜索方法,简化了解析HTML文本的过程。使用BeautifulSoup库可以方便地提取出网页中指定的标签或属性,并进行相应的处理。

我们可以使用以下命令安装BeautifulSoup库:

pip install beautifulsoup4 代理IP

代理IP就是一种中转服务器,可以使我们的请求通过代理服务器发送出去,隐藏我们的真实IP地址。使用代理IP可以绕过一些反爬措施,防止IP被封禁,提高程序的可用性。

我们可以通过网上一些免费代理IP网站进行获取,包括HTTP和HTTPS两种类型。但是,需要注意代理IP的可用性和稳定性,以免造成不必要的麻烦。

实现步骤 1. 发送请求获取HTML文本

我们需要先发送请求获取HTML文本,这里我们以某度图片搜索页为例。首先使用requests库中的get方法发送请求,并将得到的内容保存在content变量中。

import requests url = "https://image.baidu.com/search/index?tn=baiduimage&word=美景" response = requests.get(url) content = response.content 2. 解析HTML文本获取图片URL

接下来使用BeautifulSoup库解析HTML文本,获取所有的img标签,并从中提取出图片URL。这里我们只提取了data-src属性中的图片URL,并将它们保存在一个列表中。

from bs4 import BeautifulSoup soup = BeautifulSoup(content, 'html.parser') img_tags = soup.find_all('img') img_urls = [] for tag in img_tags: img_url = tag.get('data-src') if img_url: img_urls.append(img_url)

需要注意的是,由于图片URL可能存在于data-src属性中而不是src属性中,因此我们需要判断是否存在data-src属性。有些图片也可能没有data-src属性,我们需要根据实际情况进行修改。

3. 创建文件夹并下载图片

在获取了所有的图片URL之后,我们需要将它们批量下载到本地。这里我们创建一个名为images的文件夹,将下载的图片保存在其中。

import os save_dir = "./images" if not os.path.exists(save_dir): os.makedirs(save_dir)

接下来使用requests库的get方法请求每个图片URL,并将得到的内容保存为二进制文件。我们将下载的文件命名为0.jpg、1.jpg、2.jpg…,并依次保存在images文件夹中。

for i, img_url in enumerate(img_urls): response = requests.get(img_url) with open(os.path.join(save_dir, f"{i}.jpg"), "wb") as f: f.write(response.content)

需要注意的是,如果直接将图片URL作为文件名,可能会因为包含了一些特殊字符而导致文件保存失败。因此我们采用了使用数字依次命名的方法,可以避免这个问题。

4. 加入代理IP

在使用代理IP之前,我们需要先获取一些可用的代理IP地址。这里我们使用一个名为proxies的列表,将多个代理IP地址和对应的端口号保存在其中。

proxies = [ "http://ip_address1:port", "http://ip_address2:port", "http://ip_address3:port", ... ]

接下来,我们使用requests库的proxies参数来设置代理IP进行请求。我们随机选择一个可用的代理IP进行请求,避免了被封禁的风险。

import random proxy = { "http": "http://" + proxies[random.randint(0, len(proxies) - 1)] } response = requests.get(img_url, proxies=proxy)

需要注意的是,每个代理IP的格式为http://ip_address:port或者https://ip_address:port,这里我们选择了使用http协议的代理IP。另外,如果我们需要使用https协议的代理IP,只需要将http替换成https即可。

完整代码

下面是完整的代码实现,包括代理IP的使用。

import requests import os import random url = "https://image.baidu.com/search/index?tn=baiduimage&word=美景" proxies = [ "http://ip_address1:port", "http://ip_address2:port", "http://ip_address3:port", ... ] response = requests.get(url) content = response.content # 使用BeautifulSoup库解析HTML from bs4 import BeautifulSoup soup = BeautifulSoup(content, 'html.parser') img_tags = soup.find_all('img') img_urls = [] for tag in img_tags: img_url = tag.get('data-src') if img_url: img_urls.append(img_url) # 创建文件夹,存储下载的图片 save_dir = "./images" if not os.path.exists(save_dir): os.makedirs(save_dir) # 使用代理IP进行请求 for i, img_url in enumerate(img_urls): proxy = { "http": "http://" + proxies[random.randint(0, len(proxies) - 1)] } response = requests.get(img_url, proxies=proxy) with open(os.path.join(save_dir, f"{i}.jpg"), "wb") as f: f.write(response.content) 总结

本文介绍了如何使用Python爬虫根据关键字爬取某度图片批量下载到本地,并加入代理IP的使用,绕过反爬措施。需要注意的是,代理IP的可用性和稳定性对程序效果有着很大的影响,我们需要仔细选择和测试代理IP,以提高程序的可用性和稳定性。

---------------------------END--------------------------- 题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费. 在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有